perm filename INT.AL[AL,HE] blob
sn#453452 filedate 1979-07-05 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 { ************* Programmbeginn und Prozeduren : ****** }
C00005 00003 { ********* Bedienschleife : ************ }
C00010 00004 { ********* Bedienschleife 2.Teil : ***********}
C00013 00005 { ******** Programmende : ***********}
C00014 ENDMK
C⊗;
{ ************* Programmbeginn und Prozeduren : ****** }
BEGIN"Int.al"
FRAME f,punkt,altp;
VECTOR v1,v2;
DISTANCE VECTOR v;
SCALAR einaus;
SCALAR code,x,y,z,wert;
SCALAR fzahl,czahl,szahl,grenze;
FRAME ARRAY fliste[1:25];
SCALAR ARRAY bcode[1:25];
DISTANCE SCALAR ARRAY sliste[1:25];
DISTANCE SCALAR ds;
DEFINE d = ⊂2.5⊃;
{ ********************** PROCEDUREN : ****************}
PROCEDURE xyzwert(SCALAR x,y,z);
BEGIN
PRINT(" *** X:"); x ← INSCALAR;
PRINT(" *** Y:"); y ← INSCALAR;
PRINT(" *** Z:"); z ← INSCALAR;
END;
PROCEDURE xyzaus(DISTANCE VECTOR v);
PRINT(" X= ",v.XHAT*d," Y= ",v.YHAT*d," Z= ",v.ZHAT*d,CRLF);
{ ********************* Initialisieren : *************}
SLOW;
grenze ← 25;
x ← 20;
y ← 30;
z ← 7;
fzahl ← 1;
czahl ← 1;
szahl ← 1;
PRINT(CRLF," Interakt. Bedienprogr. : ",CRLF);
MOVE BARM TO BPARK
WITH DURATION = 4*SEC;
altp ← BARM;
punkt ← BARM;
einaus ← TRUE;
{ ********* Bedienschleife : ************ }
WHILE einaus DO
BEGIN"Bedienschleife"
PRINT(CRLF,"0 Arm aus",CRLF,"1 Arm ein",CRLF,"2 Open",CRLF);
PRINT("3 Close",CRLF,"4 Center",CRLF,"5 Aktion",CRLF,"6 Loesch",CRLF);
PRINT("8 V.V",CRLF,"9 V*V",CRLF,"10 F*V",CRLF);
PRINT("12 BPARK",CRLF,"13 *** Ende",CRLF);
code ← INSCALAR;
v ← POS(punkt);
IF (fzahl>grenze)∨(czahl>grenze)∨(szahl>grenze) THEN
BEGIN
fzahl ← 1;
czahl ← 1;
szahl ← 1;
END;
CASE code OF
BEGIN
[0] xyzaus(v);
[1] BEGIN
xyzwert(x,y,z);
v ← VECTOR(x,y,z)*CM;
punkt ← FRAME(ORIENT(altp),v);
altp ← punkt;
MOVE BARM TO punkt DIRECTLY WITH NULLING;
fliste[fzahl] ← punkt;
fzahl ← fzahl + 1;
bcode[czahl] ← 1;
czahl ← czahl + 1;
END;
[2] BEGIN
PRINT(" Wert:"); wert ← INSCALAR;
ds ← wert*CM;
OPEN BHAND TO ds;
sliste[szahl] ← ds;
szahl ← szahl + 1;
bcode[czahl] ← 2;
czahl ← czahl + 1;
END;
[3] PRINT(" Nicht implementiert !");
[4] BEGIN
CENTER BARM;
bcode[czahl] ← 3;
czahl ← czahl + 1;
END;
[5] BEGIN
SCALAR i,k,l,m;
k ← 1; l ← 1; m ← 1;
MOVE BARM TO BPARK
WITH DURATION = 6*SEC;
FOR i ← 1 STEP 1 UNTIL czahl - 1 DO
BEGIN
CASE bcode[i] OF
BEGIN
[1] BEGIN
MOVE BARM TO fliste[k] DIRECTLY;
k ← k + 1;
END;
[2] BEGIN
OPEN BHAND TO sliste[l];
l ← l + 1;
END;
[3] CENTER BARM;
ELSE
PRINT("*** Codefehler !",CRLF)
END
END
END;
[6] BEGIN
fzahl ← 1;
czahl ← 1;
szahl ← 1;
PRINT(" Aktion geloescht !",CRLF);
END;
{ ********* Bedienschleife 2.Teil : ***********}
[8] BEGIN
PRINT(" V.V: ");
xyzwert(x,y,z); v1 ← VECTOR(x,y,z);
xyzwert(x,y,z); v2 ← VECTOR(x,y,z);
wert ← v1.v2;
PRINT(" *** V.V = ",wert,"CRLF");
END;
[9] BEGIN
PRINT(" V*V:",CRLF);
xyzwert(x,y,z); v1 ← VECTOR(x,y,z);
xyzwert(x,y,z); v2 ← VECTOR(x,y,z);
v ← v1*v2*CM;
PRINT(" *** V*V= ");
xyzaus(v);
END;
[10] BEGIN
PRINT(" *** F*V: ");
xyzwert(x,y,z);
f ← FRAME(NILROTN,VECTOR(x,y,z)*CM);
xyzwert(x,y,z); v2 ← VECTOR(x,y,z);
v ← f*v2;
PRINT(" *** f*v = ");
xyzaus(v);
END;
[8] MOVE BARM TO BPARK
WITH DURATION = 4*SEC;
[9] einaus ← FALSE;
ELSE
PRINT(" Falscher Code !",CRLF,CRLF)
END
END"Bedienschleife";
{ ******** Programmende : ***********}
MOVE BARM TO BPARK
WITH DURATION = 4*SEC;
PRINT(CRLF," ***** Programmende !",CRLF);
END"Int.al"